﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using Excel = Microsoft.Office.Interop.Excel;
using DTO;
using BUS;
namespace GUI
{
    public partial class FormBaoCaoDoanhThuTheoLoaiMon : Form
    {
        public class DoanhThuLoaiMon
        {
            private int sSTT;
            private string sLoaiMonAn;
            private long sDoanhThu;
            private float sTile;
            public int STT
            {
                get { return sSTT; }
                set { sSTT = value; }
            }
            public string LoaiMonAn
            {
                get { return sLoaiMonAn; }
                set { sLoaiMonAn = value; }
            }
            public long DoanhThu
            {
                get { return sDoanhThu; }
                set { sDoanhThu = value; }
            }
            public float Tile
            {
                get { return sTile; }
                set { sTile = value; }
            }

        };
        string[] TuNgay = { "Chọn", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24" };
        string[] DenNgay = { "Chọn", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24" };
        public FormBaoCaoDoanhThuTheoLoaiMon()
        {
            InitializeComponent();
            cbxTuGioLoaiMon.DataSource = TuNgay;
            cbxDenGioLoaiMon.DataSource = DenNgay;
            dtpTheoNgayTuNgayLoaiMon.Enabled = false;
            dtpTheoNgayDenNgayLoaiMon.Enabled = false;

        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void chkbXuatRaFileExcelLoaiMon_CheckedChanged(object sender, EventArgs e)
        {
            if (chkbXuatRaFileExcelLoaiMon.Checked)
            {
                btnChonNoiLuuLoaiMon.Enabled = true;
            }
            else
            {
                btnChonNoiLuuLoaiMon.Enabled = false;
            }

        }

        private void radioButton2LoaiMon_CheckedChanged(object sender, EventArgs e)
        {
            cbxDenGioLoaiMon.Enabled = false;
            cbxTuGioLoaiMon.Enabled = false;
            dtpTheoGioNgayLoaiMon.Enabled = false;
            dtpTheoNgayTuNgayLoaiMon.Enabled = true;
            dtpTheoNgayDenNgayLoaiMon.Enabled = true;
        }

        private void radioButton1LoaiMon_CheckedChanged(object sender, EventArgs e)
        {
            cbxDenGioLoaiMon.Enabled = true;
            cbxTuGioLoaiMon.Enabled = true;
            dtpTheoGioNgayLoaiMon.Enabled = true;
            dtpTheoNgayTuNgayLoaiMon.Enabled = false;
            dtpTheoNgayDenNgayLoaiMon.Enabled = false;
        }

        private void cbxTuNgay_SelectedIndexChanged(object sender, EventArgs e)
        {



        }

        private void cbxDenNgay_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        // Cần Ghi Báo Cáo Ra FileExcel cho nên listDoanhThu sẽ để toàn cục
        List<DoanhThuLoaiMon> listDoanhThu = new List<DoanhThuLoaiMon>();
        long TongDoanhThu = 0;
        public void XuatBaoCaoTheoNgayGioRaDataGridView(string gioTu,string gioDen,int KEY_CODE)
        {
            LoaiMonAnBUS lmaBus = new LoaiMonAnBUS();
            List<LoaiMonAnDTO> listLoaiMonAn = lmaBus.LayDanhSachLoaiMonAn();
            // Khởi Tạo Cấu Trúc Danh Sách Doanh Thu Loại Món Để In Ra DGV
            
            int STT = 0;
            foreach( LoaiMonAnDTO singleRecord in listLoaiMonAn )
            {
                STT = STT + 1;
                DoanhThuLoaiMon singleR = new DoanhThuLoaiMon();
                // Lưu Tên Loại Món 
                singleR.STT = STT;
                singleR.LoaiMonAn = singleRecord.Ten_Mon_An;
                long DoanhThu = 0;
                // Tính Doanh Thu Của 1 Loại Món Ăn
                HoaDonBUS hdbus = new HoaDonBUS();
                DoanhThu = hdbus.DoanhThuLoaiMonAnTheoGio(gioTu, gioDen, singleRecord.Id_Loai,KEY_CODE);
                singleR.DoanhThu = DoanhThu;
                singleR.Tile = 0;
                listDoanhThu.Add(singleR);
            }
            
            foreach (DoanhThuLoaiMon singleR in listDoanhThu)
            {
                TongDoanhThu = TongDoanhThu + Convert.ToInt64(singleR.DoanhThu);
            }
            foreach( DoanhThuLoaiMon singleR in listDoanhThu )
            {

                dataGridView1.Rows.Add(singleR.STT, singleR.LoaiMonAn, string.Format("{0:#,##0 VND;(#,##0 VND);''}",singleR.DoanhThu), Math.Round((double)(singleR.DoanhThu * 100) / TongDoanhThu, 2));
            }
            tbTongDoanhthu.Text = string.Format("{0:#,##0 VND;(#,##0 VND);''}", TongDoanhThu);


        }
        public void XuatBaoCaoTheoNgayRaDataGridView(string ngayTu,string ngayDen)
        {
            
        }
        public void GhiBaoCaoRaFileExcel(string FileName)
        {
            if (File.Exists(FileName))
            {
                File.Delete(FileName);
            }
            Excel._Application oApp;
            Excel.Worksheet oSheet;
            Excel.Workbook oBook;
            oApp = new Excel.Application();
            oBook = (Excel.Workbook)oApp.Workbooks.Add();
            oSheet = (Excel.Worksheet)oBook.Worksheets.get_Item(1);
            // Tiểu Đề
            oSheet.Cells[1, 1] = "STT";
            oSheet.Cells[1, 2] = "Tên Loại Món Ăn";
            oSheet.Cells[1, 3] = "Doanh Thu";
            oSheet.Cells[1, 4] = "Tỉ Lệ(%)";
            int i = 2;
            foreach (DoanhThuLoaiMon singleR in listDoanhThu)
            {
                oSheet.Cells[i,1]=singleR.STT;
                oSheet.Cells[i,2]=singleR.LoaiMonAn;
                oSheet.Cells[i,3]=singleR.DoanhThu;
                oSheet.Cells[i, 4] = Math.Round((double)(singleR.DoanhThu * 100) / TongDoanhThu, 2);
                i++;
                
            }
            oBook.SaveAs(FileName);
            oBook.Close();
            oApp.Quit();
        }

        DateTime dt = new DateTime();
        DateTime dt2 = new DateTime();
        DateTime dt3 = new DateTime();
        private void button1_Click_1(object sender, EventArgs e)
        {
            dataGridView1.Rows.Clear();
            dt = dtpTheoGioNgayLoaiMon.Value;
            dt2 = dtpTheoNgayTuNgayLoaiMon.Value;
            dt3 = dtpTheoNgayDenNgayLoaiMon.Value;
            if (rbTheoGio.Checked)
            {
                if (cbxTuGioLoaiMon.SelectedIndex < cbxDenGioLoaiMon.SelectedIndex)
                {
                    
                    
                        // Xuất Báo Cáo Ra DataGridView
                        string gioTu = dt.Year.ToString()+"-"+dt.Month+"-"+dt.Day+" "+cbxTuGioLoaiMon.SelectedIndex.ToString()+":00";
                        string gioDen = dt.Year.ToString() + "-" + dt.Month + "-" + dt.Day + " " + cbxDenGioLoaiMon.SelectedIndex.ToString() + ":00";
                        XuatBaoCaoTheoNgayGioRaDataGridView(gioTu, gioDen,0);
                        if (chkbXuatRaFileExcelLoaiMon.Checked)
                        {
                            GhiBaoCaoRaFileExcel(path);
                        }
                    

                }
                else
                {
                    MessageBox.Show("Giờ không hợp lệ - giờ Từ phải nhỏ hơn giờ Đến");
                    return;
                }

            }
            else if (rbTheoNgay.Checked)
            {
                if (dtpTheoNgayTuNgayLoaiMon.Value < dtpTheoNgayDenNgayLoaiMon.Value)
                {
                    
                    string ngayTu  =dt2.Year+"-"+dt2.Month+"-"+dt2.Day;
                    string ngayDen =dt3.Year+"-"+dt3.Month+"-"+dt3.Day;
                    XuatBaoCaoTheoNgayGioRaDataGridView(ngayTu, ngayDen,1);
                    if(chkbXuatRaFileExcelLoaiMon.Checked)
                    {
                        GhiBaoCaoRaFileExcel(path);
                    }
                        
                }
                else
                {
                    MessageBox.Show("Ngày không hợp lệ - ngày Từ phải nhỏ hơn ngày Đến");
                    return;
                }
                
                

            }
            MessageBox.Show("Báo Cáo Hoàn Tất");
            // Reset lại các biến về trạng thái ban đầu
            listDoanhThu.Clear();
            TongDoanhThu = 0;
            return;

        }

        private void FormBaoCaoDoanhThuTheoKhuVuc_Load(object sender, EventArgs e)
        {

        }
        string path = "";
        private void btnChonNoiLuuLoaiMon_Click(object sender, EventArgs e)
        {
            SaveFileDialog sfd = new SaveFileDialog();
            sfd.Title = "Chọn nơi lưu";
            sfd.Filter = "Excel WorkBook|*.xls";
            sfd.FileName = "Bao Cao Doanh Thu.xls";
            if(sfd.ShowDialog() == DialogResult.OK)
            {
                path = sfd.FileName;
            }
        }
        
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void FormBaoCaoDoanhThuTheoLoaiMon_Load(object sender, EventArgs e)
        {

        }






    }
}
